/**
 * @file main_account.hh
 * @brief 迷你银行系统账户操作相关功能声明文件。
 */

#ifndef MAIN_ACCOUNT_HH
#define MAIN_ACCOUNT_HH

#include <iostream>
#include <string>
#include <memory>
#include "BankSystem.hh"
#include "UIManager.hh"
#include "Account.hh"

/**
 * @brief 处理账户操作
 * @param bankSystem 银行系统实例
 * @param uiManager UI管理器实例
 * @param accountId 账户ID
 */
void handleAccountOperations(BankSystem& bankSystem, UIManager& uiManager, const std::string& accountId);

/**
 * @brief 显示账户信息
 * @param account 账户指针
 */
void displayAccountInfo(const std::shared_ptr<Account>& account);

/**
 * @brief 处理转账操作
 * @param bankSystem 银行系统实例
 * @param uiManager UI管理器实例
 * @param sourceAccountId 源账户ID
 * @return 操作是否成功
 */
bool handleTransferOperation(BankSystem& bankSystem, UIManager& uiManager, const std::string& sourceAccountId);

/**
 * @brief 处理存款操作
 * @param bankSystem 银行系统实例
 * @param uiManager UI管理器实例
 * @param accountId 账户ID
 * @return 操作是否成功
 */
bool handleDepositOperation(BankSystem& bankSystem, UIManager& uiManager, const std::string& accountId);

/**
 * @brief 处理取款操作
 * @param bankSystem 银行系统实例
 * @param uiManager UI管理器实例
 * @param accountId 账户ID
 * @return 操作是否成功
 */
bool handleWithdrawOperation(BankSystem& bankSystem, UIManager& uiManager, const std::string& accountId);

/**
 * @brief 处理显示所有账户
 * @param bankSystem 银行系统实例
 * @param uiManager UI管理器实例
 */
void handleDisplayAllAccounts(BankSystem& bankSystem, UIManager& uiManager);

#endif // MAIN_ACCOUNT_HH 